package main

import (
	"fmt"
	"math/rand"
	"time"
)

func main() {

	var randSum int

	// 随机产生一个4位的随机数
	CreateNum(&randSum)

	fmt.Println("randNum = ", randSum)

	randSlice := make([]int, 4)
	// 保存这个4位数的每一位
	//n1 := 1234/1000
	//n2 := 1234 % 100 / 100 // 取余数, 结果为 234 然后 234/100 取商得到2
	//fmt.Println(n1)
	//fmt.Println(n2)

	GetNum(randSlice, randSum)

	fmt.Println("randSlice = ", randSlice)

	OnGame(randSlice)

}

func OnGame(randSlice []int) {
	var num int
	KeySlice := make([]int, 4)

	for {
		fmt.Println("请输入一个4位数: ")
		fmt.Scan(&num)
		if 999 < num && num < 10000 {
			break
		}
		fmt.Println("输入的数不符合要求!")
	}
	//fmt.Println("num = ", num)

	GetNum(KeySlice, num)

	//fmt.Println("KeySlice = ", KeySlice)

	n := 0
	for i := 0; i < 4; i++ {
		if randSlice[i] > KeySlice[i] {
			fmt.Printf("第%d位大了一点\n", i+1)
		} else if randSlice[i] < KeySlice[i] {
			fmt.Printf("第%d位小了一点\n", i+1)
		} else {
			fmt.Printf("第%d位猜对了\n", i+1)
			n++
		}

		if n == 4 { // 4位都猜对了
			fmt.Println("全部都猜对!")
			break
		}
	}

}

func GetNum(s []int, num int) {
	s[0] = num / 1000 // 取千位
	s[1] = num % 1000 / 100 // 取百位
	s[2] = num % 100 / 10 // 取十位
	s[3] = num % 10 // 取个位

}

func CreateNum(p *int) {
	// 设置种子
	rand.Seed(time.Now().UnixNano())

	var num int

	for {
		num = rand.Intn(10000)

		if num > 1000 { // 产生的数要大于四位数
			break
		}
	}
	//fmt.Println("num = ", num)

	*p = num

}
